perm filename MBUF.H[IP,SYS] blob
sn#680184 filedate 1982-10-07 generic text, type T, neo UTF8
#define NNETPAGES 256 /* maximum number of net pages */
#define PGSIZE 1024 /* size of a net page */
#define MSIZE 128 /* size of an mbuf */
#define MHEAD (2+2*sizeof(struct mbuf *)) /* mbuf hdr length (not incl data) */
#define MLEN (MSIZE-MHEAD) /* mbuf max data length */
#define NMBPG (PGSIZE/MSIZE) /* mbufs/page */
struct mbuf { /* message buffer */
struct mbuf *m_next; /* -> next msg buffer in chain */
struct mbuf *m_act; /* auxiliary mbuf pointer */
u_char m_off; /* offset in msg buf to curr. header */
u_char m_len; /* curr. data length in msg buf */
u_char m_dat[MLEN]; /* data storage */
};
/* addr to head of mbuf */
#define dtom(x) ((struct mbuf *)((int)x & ~(MSIZE-1)))
/* mbuf head to typed data */
#define mtod(x,t) ((t)((int)(x) + (x)->m_off))
struct pfree { /* free page table */
u_char p_free; /* # free bufs remaining in page */
u_char p_off; /* offset to next free buf in page */
u_char p_next; /* index of next free page entry */
u_char p_prev; /* index of prev free page entry */
};
/* pfree index to ->page data */
#define pftom(x) ((struct mbuf *)((x << 10) + (int)netutl))
/* mbuf to pfree index */
#define mtopf(x) ((((int)x & ~0x3ff) - (int)netutl) >> 10)
/* mbuf to page offset */
#define mtoff(x) (((int)x & 0x3ff) >> 7)
#ifdef KERNEL
struct pfree *freetab; /* ->free page table */
int nnetpages;
extern struct mbuf netutl[]; /* virtual address of net free mem */
extern struct pte Netmap[]; /* page tables to map Netutl */
struct mbuf *m_get();
struct mbuf *m_free();
int m_freem();
struct mbuf *m_adj();
struct mbuf *m_copy();
struct host *h_find();
struct host *h_make();
#endif KERNEL